package com.proj.dao;

import com.entity.Goods;

import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface RecommendDao {
  /**
   * 按用户浏览历史推荐书籍（通过浏览历史，查看用户查看的书籍的种类前几名，然后推荐前几名种类的点击量最高的N本书籍
   *
   * @param userId 用户编号
   * @param categoryNum 种类个数
   * @param goodsNum 图书本数
   * @return
   */
  List<Goods> selectGoodsByCategoryIdsFromHistory(
      @Param("userId") String userId,
      @Param("categoryNum") int categoryNum,
      @Param("goodsNum") int goodsNum);

  /**
   * 推荐点击量前N名的书籍
   *
   * @param goodsNum 图书本数
   * @return
   */
  List<Goods> selectGoodsByVisit(@Param("goodsNum") int goodsNum);

  /**
   * 推荐收藏最多的N本书籍
   *
   * @param goodsNum 图书本数
   * @return
   */
  List<Goods> selectGoodsByCollection(@Param("goodsNum") int goodsNum);

  /**
   * 浏览过该书籍的顾客也浏览过的书籍
   *
   * @param goodsNum 图书本数
   * @param goodsId 图书编号
   * @return
   */
  List<Goods> selectGoodsByGoodsFromHistory(
      @Param("goodsNum") int goodsNum, @Param("goodsId") String goodsId);

  /**
   * 购买过该书籍的顾客也购买过的书籍
   *
   * @param goodsNum 图书本数
   * @param goodsId 图书编号
   * @return
   */
  List<Goods> selectGoodsByGoodsFromOrder(
      @Param("goodsNum") int goodsNum, @Param("goodsId") String goodsId);
}
